Typical computer operating systems (e.g. Windows®) transport data over IP networks using either a file protocol (e.g. common internet file system—abbreviated CIFS) or a block protocol (e.g. internet small computer systems interface—abbreviated iSCSI). A nice feature of the CIFS protocol is that file sharing among multiple computers on a network is supported. However, the CIFS protocol requires a rather large overhead to support data sharing (and other functions). As a consequence, data transfer performance over a network is somewhat poor.
On the other hand, a nice characteristic associated with the block protocol is its relatively low overhead. Indeed, the block protocol is quite efficient and can be used to very quickly transport data over a network. In fact, in most cases the block protocol can be used to achieve line-rate data transfers to and from block storage devices over IP networks. However, heretofore, block storage devices, such as a typical hard drive, could not be easily shared by multiple computers. To the contrary, most operating systems have been written to interact with block storage devices as the exclusive owner, and as such, do not easily relinquish control of a block storage device. For example, operating systems tend to keep large amounts of data in cache when interacting with a non-removable block storage device such as a hard drive, and accordingly, do not give up ownership of the hard drive quickly and easily. On the other hand, when an operating system is interacting with a removable storage device such as a floppy drive or CD ROM, the operating system keeps only small amounts of data in cache, and frequently dumps its cache. As a consequence, the operating system quickly and easily relinquishes control of a floppy or CD ROM drive, for example when a user ejects the removable disk.
One solution that has been suggested to allow non-removable block level storage devices to be shared over a network involves the addition of complex software (and in some cases additional hardware) to each computer on the network to facilitate the transfer of a block storage device between multiple computers. However, a much more practical solution is needed. Specifically, there is a need to develop a block storage device that can be plugged into a pre-existing network to allow block level data to be shared by computers on the network and which is operable with little or no modification to the existing computers on the network.
One application in which the sharing of block level data over a network is particularly useful is data backup. For example, it is typically a prudent business practice to backup an application server on a daily basis, and in some cases, several times a day. Traditionally, data on an application server has been transferred over an IP network to a backup server, where the data is then written to tape. Backup storage on tape has several advantages. Specifically, tape provides good long-term storage, is relatively inexpensive and can be easily transported to a location remote from the server. Moving the tape to a remote location ensures that the tape would survive an earthquake or fire that might otherwise damage data on the server. However, reading and writing data to tape is a relatively slow process, compared to data transfers to and from a hard drive, for example. Still, the advantages of tape, including its cost and its ability to be moved freely, continue to make tape an important part of an overall backup strategy.
More recently, systems have been suggested that use a backup server to backup data to disk (e.g. RAID storage), instead of tape. However, in a typical backup server to disk system, the application server must wait in line for access to the backup server. Moreover, once the application server accesses the backup server, the data must pass through the backup server to be written to the backup disk. In addition to these time delays, the backup server to disk system fails to leverage the advantages offered by tape backup described above. A more desirable backup system would allow an application server to write its backup data directly to a block storage device (without waiting in line for a backup server), followed by a secondary backup to tape, for long term data storage.
Another application in which the sharing of block level data over a network is particularly useful is the editing of a large block of data by a plurality of users that are working, for example, on personal computers or workstations at different locations. For example, a shareable block device could be used to sequentially allow a first edit session with a worker at a first location followed by a second edit session with a worker at a second location, without requiring the block of data to be transferred from the first location to the second. The ability to share block level data over a network can also be used to transfer ownership of block level data between a file server and a primary site. In one specific application, the block level device can be configured to transfer ownership from a file server to a primary site at a pre-selected time.
In light of the above, it is an object of the present invention to provide systems and methods for sharing block data over a network. It is another object of the present invention to provide an appliance that allows a backup server and an application server to access and share a block level storage device for the purpose of backing up data from the application server. It is yet another object of the present invention to provide systems and methods for providing a plurality of networked computers shared access to a block level storage device that does not require customized software or hardware to be installed on the accessing computers. Yet another object of the present invention is to provide an appliance that is capable of performing a quick data backup from a standard application server that includes both a primary backup on a hard drive and a secondary backup to tape. It is still another object of the present invention to provide systems and methods for sharing block data over a network which are easy to use, relatively simple to implement, and comparatively cost effective.